1. Field of the Invention
The present invention relates to a program reception/execution apparatus that receives and executes a transmitted machine program and to a program transmission apparatus for transmitting such a machine program, and in particular to a program reception/execution apparatus that receives and executes a transmitted machine program for performing control that relates to programs broadcast by a digital broadcasting system and to a program transmission apparatus for transmitting such a machine program.
2. Related Art
In recent years there have been rapid advances in techniques relating to the digitization of various kinds of information signals, such as audio and video. As a result, a great amount of research and development is being performed all over the world with the aim of achieving a system capable of acting both as a digital broadcasting system and digital communication system.
In the development of digital broadcasting systems, one of the most important issues is the compression processing of digitized image signals and audio signals. Standards such as Moving Picture Image Coding Experts Group (MPEG), Joint Photographic Coding Experts Group (JPEG) and H.261 have become established as the main techniques for compression processing for these kinds of data, although another technique known as ISO/IEC 13818 [ISO/IEC JTC (Joint Technical Committee)1/SC(Subcommittee)29/WG(Working Group)] has been proposed by the ISO (International Organization for Standardization) and the IEC (International Electrotechnical Commission). This technique is a broad technique that applies to broadcasting, communication, and storage media and is currently under review prior to becoming an international standard.
The technique known as ISO/IEC 13818 does not only apply to a data compression method, but also stipulates a method to be used for a control part for a digital broadcasting system where a broadcaster separately performs a compression process on digital images, audio, and other data that compose a program and multiplexes the compressed data into a bitstream, while a receiver apparatus selectively receives a desired program. It should be noted here that in this specification, the term xe2x80x9cprogramxe2x80x9d refers to a TV program or other such event which is broadcast, while the term xe2x80x9cmachine programxe2x80x9d refers to a collection of one or more instructions which is conventionally known as a (computer) program.
The following is a description of the compression processing performed for digital image data and digital audio data and the multiplexing of the compressed data into a bitstream for communication purposes, based on the regulations of ISO/IEC 13818. This description will refer to FIG. 1, FIG. 2, and FIG. 3.
FIG. 1 is an overview of the components which perform the compression processing on the digital image data and digital audio data, and multiplex the compressed data into a bitstream.
After digital image data has been compressed by the image encoding circuit 1311 and converted into an image elementary stream (xe2x80x9cimage ESxe2x80x9d), it is outputted to the packetizing circuit 1312 where it is divided into packet units to convert it into an image Packetized Elementary Stream (PES) that will form one frame. This packetized elementary stream is then supplied to the multiplexing circuit 1313. The digital audio data is compressed by the audio encoding circuit 1314 and so converted into an audio ES. This audio ES is supplied to the packetizing circuit 1315 where it is divided into packet units to convert it into an audio PES that will form one frame. The audio PES is also supplied to the multiplexing circuit 1313. The multiplexing circuit 1313 multiplexes the image PES and the audio PES according to time division multiplexing and so generates a multiplexed signal in packet units composed of 188 bytes that form a Transport Stream (TS).
In the multiplexed signal, both images and audio are divided up into one frame units, with these being composed of PES that have been appended with a header.
FIG. 2 shows the composition of a PES.
As shown in FIG. 2, the PES have variable lengths. To allow the time division multiplexing of audio and images, the PES created as described above are divided into 184 byte units to convert them into packets, with each packet being given a 4-byte header to form 188-byte transport packets (TP).
FIG. 3 shows the components used for forming a bitstream for broadcasting purposes.
As shown in FIG. 3, xe2x80x9cprogram 1xe2x80x9d is composed of a single program, with the multiplexing circuit 15161 multiplexing two sets of image data, two sets of audio data, one set of other information data, and one Program Map Table (PMT). This PMT includes information such as a Packet Identifier (PID) for identifying the image data, audio data, and information data as well as information relating to programs and the like. As shown in FIG. 3, by using n multiplexing circuits 15161, 15162, . . . 1516n, n programs can be set. The data that composes the n programs set in this way is then multiplexed according to time division by the multiplexing circuit 1517.
The multiplexing circuit 1517 multiplexes information, such as a Program Association Table (PAT) as general program information for extracting the PMT of each program, a Conditional Access Table (CAT) for controlling the scrambling of the data, a Network Information Table (NIT) showing information about the network being used, according to time division. These four kinds of table, PMT, PAT, CAT, and NIT relating to program information are set in accordance with ISO/IEC 13818 standard. The PIDs of these tables are such that the PAT has the PID xe2x80x9c00xe2x80x9d, the CAT has the PID xe2x80x9c01xe2x80x9d, and the PIDs of the PMT and the NID can be set freely.
It should be noted here that in FIG. 1, the multiplexing of only images and audio is shown, although in reality a variety of other kinds of data, such as additional information data for the programs and program information, are converted into TP and are multiplexed with the images and audio according to time division. These other kinds of data are composed of objects for various programs, with the provision of such objects allowing a greater variety of programs to be realized by the digital broadcasting system. An example of such a system is disclosed by Japanese Laid-Open Patent Application H07-231308.
The data processing method used in a conventional digital broadcasting system is described below.
FIG. 4 shows an example configuration of a digital broadcast reception apparatus in a conventional digital broadcasting system.
The signal (package object) received by the reception 5 antenna 16011 is inputted into the broadcast reception subsystem 16100 and is demodulated, before being stored in the secondary storage apparatus 16102, including the recording media 16014 composed of the magnetic disk (hard disk) 16014a and the magnetic-optical disk 16014b, via the 10 data storage management unit 16101. The secondary storage apparatus 16102 is designed so that necessary data and machine programs can be stored via the external input/output management unit 16103 and so that the stored content can be read.
The reproduction subsystem 16104 is an independent processing system called a virtual machine. This is composed of standard software, and for the ease of explanation, has been shown as a collection of function blocks. These function blocks are the loader 16122, the fundamental class library 16121, the resource/security management unit 16123, the process (thread) management unit 16124, the intermediate code interpreter 16125, and the synchronization management unit 16126.
The fundamental class library 16121 is written in intermediate code, and is a collection of classes that are used by fundamental functions of the reproduction subsystem 16104, and by a variety of program objects and other objects. When using the objects belonging to the classes written in this fundamental class library 16121, it is not necessary to transmit a definition of the class so that only an indication of the class ID will suffice. The class definitions for program objects and package objects themselves are also written in the fundamental class library 16121. This is to say, out of a machine program, the fundamental machine program objects are stored in the fundamental class library 16121 in advance. These fundamental machine program objects may be stored on a recording medium such as a floppy disk and distributed to consumers in advance so that they can be installed inside devices, or otherwise may be distributed by transmitting them from a broadcast center to a digital broadcast reception device after the user has signed a contract with the broadcast center.
The loader 16122 loads the machine programs (intermediate code) for the package objects stored in the secondary storage apparatus 16102 into the main storage 16107 via the resource/security management unit 16123 and the storage management unit 16106. When doing so, when code which has already been loaded is present in the main storage 16107 (as one example, code for the fundamental classes stored in the fundamental class library 16121 and code for user objects generated by the user), the loader 16122 generates a table showing the relationship between this code and the intermediate code.
The resource/security management unit 16123 performs processing such as destroying the data stored in the secondary storage apparatus 16102, preventing unauthorized users from accessing the data stored in components such as the secondary storage apparatus 16102 and the main storage 16107, and prohibiting the outputting of requests to the process management unit 16124. The resource/security management unit 16123 also prevents the destruction of data, alteration, or occupation of the CPU timer by certain objects.
The process management unit 16124 executes and manages various processes such as the main process, the timer process, and the reproduction process in accordance with the machine program stored in the main storage 16107.
The intermediate code interpreter 16125 successively interprets and executes intermediate code in a machine program stored in the fundamental class library 16121 or in a program loaded by the loader 16122.
The synchronization management unit 16126 manages the data which needs to be synchronously outputted, such as audio data and video data. In accordance with requests from the intermediate code interpreter 16125, the synchronization management unit 16126 performs the synchronization scheduling of a plurality of media objects in advance, and, based on the system clock, sends messages to each media object for functions such as reproduction start, stop, slow motion and double speed to perform synchronous control.
It should be noted here that the resource/security management unit 16123, the process management unit 16124, and the synchronization management unit 16126 will each have a different structure depending on the hardware configuration, while the fundamental class library 16121, the loader 16122, and the intermediate code interpreter 16125 are each composed of common elements that do not depend on the hardware configuration.
The communication subsystem 16105 operates under the control of the resource/security management unit 16123 and is used to receive and transmit various kinds of data via a predetermined transfer path to another digital broadcast reception apparatus or broadcast center.
The system clock generation circuit 16109 generates the system clock which it supplies to the process management unit 16124 and the synchronization management unit 16126. The display/reproduction management unit 16110 outputs image data to the display device 16013 and audio data to the speaker 16111, out of the data supplied by the synchronization management unit 16126 or the intermediate code interpreter 16125.
In this way, when data and a machine program are formatted (see FIG. 7), the machine program is set in intermediate code and its processing system is set as a virtual machine, so that aside from dedicated reception devices, personal computers and other kinds of information terminals may be used as digital broadcast reception apparatuses.
When package objects are viewed by the viewer in real time, data for one day""s broadcasts is included, although this data may be compressed before transmission so that the time required for data transfer can be drastically reduced to under twenty minutes. The program data and the machine program are converted into objects and may each be composed of any number of objects.
FIG. 5 shows the composition of a program object.
As shown in FIG. 5, when the program object P is an interactive drama, this program object P can be composed of a story object S and a CM (commercial message) object x. The story object S is in turn composed of the scene objects A through E and the CM object y. As one example, the scene object A may be composed of the video object A and the message object A, with the message object A being composed of the narration object A and the text object A. The CM object x, on the other hand, may be composed of the video object x and the product selection objects, with the product selection objects including the related program search objects l, m, and n in the present case.
FIG. 6 is a representation of the machine program objects that reproduce the program objects described above.
As shown in FIG. 6, player objects are provided beforehand in the digital satellite broadcasting reception apparatus as the fundamental machine language program objects (more precisely, these are generated as needed as described later in this text). As one example, when reproduction of program object 1 or program object 2 is requested out of the various program objects, these player objects will control the storage management unit 1821, the process management unit 1822, the data storage management unit 1823, and the communication subsystem 1824 and execute the reproduction processing. The details of this processing will be described later with reference to the flowchart in FIG. 8.
FIG. 7 shows the format of the program objects that are reproduced in this way.
As shown in FIG. 7, a program object is composed of a header part, a class definition part, and an object data part. The header part is composed of an object header, a program ID, a program name, a version, and an object dictionary. The object header is composed of an object ID of a program object, an object name, a class ID, a priority, and a size. The program ID is an ID for identifying the program object, while the program name is the name of the program object. The version shows a version number for the present program object when the present program object has been subject to amendment. The object dictionary, meanwhile, is an arrangement of data for accessing a predetermined object which is provided in the object data part.
Each object belongs to one class, and the class definition is given the frame of each object. More specifically, all of the objects that belong to one class have the commonly used variables and methods (machine programs) provided in the class definition part. This is to say, the class definition part can be composed of any number of class definitions. Each class definition is composed of a class ID, a class name, a superclass ID, a variable definition, a method dictionary, and a method. The class ID and the class name express the name and ID which are used to identify the class. The superclass ID, meanwhile, shows the class which is directly above the present class in a hierarchy. When viewed from the superclass level which is above the level of these classes, these lower classes are called xe2x80x9csubclassesxe2x80x9d. The variable definition defines the variables that are used in the method (machine program) in the present class definition. A machine program stored as intermediate code (intermediate code generated from a source program composed of character string data) composes the method. In this way, by storing the method as intermediate code, the processing efficiency during execution can be raised and a reduction in the data amount can be achieved. The method dictionary includes data for accessing to each method (machine program) provided in the methods. In this class definition part, the definitions of the expanded classes which are included in this program object are collectively written. The class definitions present in the fundamental class library 16121 do not need to be included in the class definition part. As a result, if all of the objects included in program objects are instances of fundamental classes, a class definition part will not be required.
The object data part can be composed of any number of objects. Each object is composed of an object header and variable values. The object header is composed of an object ID, an object name, a class ID, a priority, and a size. The object ID and object name express an ID and a name for identifying the object. The class ID shows the class to which this object belongs. The priority shows the position of the object in a reproduction order, and is expressed as a numerical value between xe2x80x9c0xe2x80x9d and xe2x80x9c3xe2x80x9d. In this order, larger values express higher priorities. The size shows the amount of data included in this object. The variable values are the material data itself, with these variable values also including control data.
A package object can be composed of any number of program objects, so that as one example, a package object may be composed of three program objects. Each package object is composed of a header part, a class definition part, and a program object data part. The object headers are arranged at the front of this header part, with each of these object headers including an object ID, an object name, a class ID, a priority, and a size. Following these object headers, the package ID and the package name are given. These express the name and ID of the present package object. Next, the date at which the package object was generated and the version number are given. After these, the program index is given. This program index includes data for accessing the object data part of the three program objects that are provided in the program object data part. The class definition part collectively stores the class definition parts of the three program objects in the package object. Here, duplicated data is omitted where appropriate from the class definition part of each program object. As described above, the class definition parts are written in intermediate code. Finally, the header parts and the object data of the package object are collectively written into program object data part.
The processing in the main process is described below with reference to FIG. 8.
In step S2021, the intermediate code interpreter 16125 controls the loader 16122 so that reception is performed by the antenna 16011 and the header part and class definition part (see FIG. 7) of a package object stored in the secondary storage apparatus 16102 are read by the loader 16122 and are loaded into the main storage 16107 via the resource/security management unit 16123 and the storage management unit 16106. The processing then proceeds to S2022, where a header part (see FIG. 7) of one of the program objects in the program object data part of the package object is read. In the package object, program objects are stored in descending order of priority, and the header part of each program object is read in that order. The processing then proceeds to step S2023, where the priority is read from the header part read in step S2022. As described above, the priority has a value which is xe2x80x9c0xe2x80x9d, xe2x80x9c1xe2x80x9d, xe2x80x9c2xe2x80x9d, or xe2x80x9c3xe2x80x9d. Here, data with the priority value xe2x80x9c3xe2x80x9d are urgent programs or programs which the broadcast center wants every viewer to see.
In step S2024, it is judged whether the priority read in step S2023 is xe2x80x9c3xe2x80x9d, and, if not, the processing advances to step S2025 where it is judged whether the read of the header parts for the header parts of the other program objects which compose the package objects has been completed. When there are program objects whose header is yet to be read, the processing returns to step S2022 so that the processing thereafter can be repeated.
When it is judged in step S2024 that the read priority is xe2x80x9c3xe2x80x9d, the processing advances to step S2026 where a prioritized player object is generated. By doing so, a prioritized player object (whose class is included in the fundamental class library 16121) which forms the basis of the prioritized reproduction process is generated from the main process. This is to say, the required area is reserved in the main storage 16107 in accordance with the class definition in the prioritized player object, and each variable region is arranged within this reserved region. Here, the actual data that corresponds to each variable value is read from the secondary storage apparatus 16102 and is loaded into the main storage 16107, before instantiation is performed. At the same time, other necessary processing, such as an initiation method, is performed. It should be noted here that the data content of the various media that are required at the time of display/reproduction has a substantial data amount, and so is read from the secondary storage apparatus 16102 not during the instantiation process, but later when the display/reproduction method is performed. After this, the processing advances to step S2027, where a set message is outputted to the timer process. As described later in this text, programs with the priority xe2x80x9c3xe2x80x9d are set so as to be automatically displayed with a predetermined interval. Here, a timer process performs the setting of the time interval for automatically displaying a program with a priority xe2x80x9c3xe2x80x9d when a set message has been received from the main process. The processing then advances to step S2028 where the reproduction process generation process is performed. After this, the processing returns from step S2028 to step S2025.
In step S2025, it is determined whether there is a program object in the program object data part of the package object whose header part has not been read. If such a program object remains, the processing returns to step S2022 and the processing described above is repeated so that the header part is read.
When it has been determined in step S2025 that the read of the header part has been performed for all of the program objects included in the package object, the processing advances to step S2029 where the program selection menu display process is executed. This is to say, the intermediate code interpreter 16125 controls the display/reproduction management unit 16110 and has the program selection menu displayed on the display device 16013. This program selection menu is a display for selecting a program in accordance with a default machine program or for selecting a program in accordance with a program selection method (user object) that has been defined by the user. The user manipulates the input device 16015 that enables the interactive functioning to be made and selects one of the two choices given above, so that a program is selected according to a default or to a program selection method defined by the user. When the default is used, each program object is reproduced in order in accordance with their priorities. On the other hand, when a user-defined selection is made, programs are only displayed in accordance with user selections so that, for example, should the user give an indication for xe2x80x9cdramaxe2x80x9d, only drama programs will be reproduced out of the program objects received by the digital broadcast reception apparatus.
The processing then advances to step S2030 where it is judged whether the reproduction queue is empty. If this is not the case, such as when there is an object with the priority xe2x80x9c3xe2x80x9d described above, then in the reproduction process generation process of step S2028 a predetermined reproduction process ID will have been set in the reproduction queue by the reproduction queue setting process, so that the reproduction queue will not be empty. In this case, the reproduction queue evaluation process will be performed in step S2037. Here, it is first judged whether there is a reproduction process that is currently being reproduced. When there is a reproduction process that is currently being reproduced, it is judged whether the priority of the reproduction process which is at the front of the reproduction queue (which is to say, the reproduction process that is scheduled to be reproduced next) is higher than the priority of the reproduction process that is currently being reproduced. When there is a program with the priority xe2x80x9c3xe2x80x9d, the ID of the reproduction process with the priority xe2x80x9c3xe2x80x9d is set at the front of the reproduction queue. As a result, when the reproduction process that is currently.being reproduced as a priority that is xe2x80x9c2xe2x80x9d or below, a cancellation message will be issued for the reproduction process that is being reproduced. When a reproduction process receives a cancellation message from the main process, the allocation of processing time for reproduction will be set at {fraction (1/20)} of its present value.
After this, the reproduction queue setting process is performed. In more detail, the priority of the reproduction process that is currently being reproduced is evaluated and the ID of the reproduction process that is currently being reproduced is set at appropriate position in the queue for the evaluation. To execute the processing (reproduce) for a reproduction process, it is necessary to set the ID of the reproduction process in the reproduction queue, although once the reproduction process.has been commenced, the ID of the reproduction process will be deleted from the reproduction queue. As a result, for a reproduction process that has been canceled (which is to say, a reproduction process whose allocation of display processing time has been reduced), recommencement of the reproduction process (which is to say, the return of the allocation of the standard display processing time) is only possible if the ID of the presently reproduced reproduction process (which is to say, the reproduction process that is being reproduced with a low display speed) is set once again into the reproduction queue. In this way, when the reproduction queue setting process has been completed, or when it is judged that there is no reproduction process that is currently being reproduced, an activate message is outputted to the reproduction process at the front of the reproduction queue.
When a reproduction process receives an activation message, the reproduction process which is yet to be displayed or which is being displayed with a slow rate is set as being displayed at the standard rate and the ID of the reproduction process that outputted the activation message is deleted from the reproduction queue. When the priority of the reproduction process at the front of the reproduction queue is judged to be equal to or below the priority of the reproduction queue that is currently being reproduced, the reproduction process that is being reproduced is given priority, so that no particular processing is executed.
When it has been judged in step S2030 that the reproduction queue is empty or when the reproduction queue evaluation process has been completed in step S2037, the processing advances to step S2031 where it is judged whether the timer has given an alarm. This is to say, once a set message has been outputted from the main process to the timer process and the timer has measured a predetermined period, the timer outputs an alarm message to the main process. By doing so, an alarm message is outputted to the main process by the timer process. This process is to show that a time for cyclically (with a predetermined interval) displaying a program with the priority xe2x80x9c3xe2x80x9d has been reached. When such a message has been outputted, the processing advances from step S2031 to S2038 where the reproduction queue setting process is performed for the reproduction process ID which issued the alarm. The ID of the reproduction process for which the alarm was issued (in other words, the ID of the reproduction process with the priority xe2x80x9c3xe2x80x9d) is evaluated and the ID of this reproduction process is set at a suitable position in the reproduction queue. Since the priority of this reproduction process is xe2x80x9c3xe2x80x9d, its ID will generally be moved forward in the reproduction queue.
When it is judged in step S2031 that no alarm has been received from the timer, or that the reproduction queue setting process in step S2038 has been completed, the processing advances to step S2032 where it is judged whether the user has selected a program from the program selection menu that was displayed in step S2029. When it is judged that the user has selected a program whose reproduction is desired, the processing advances to step S2039, where a player object is generated. After this, the processing advances to step S2040 where the reproduction process generation process is performed. In more detail, a new reproduction process is generated based on the player object generated in step S2039 and the reproduction queue setting process is executed. The priority of the generated reproduction process is evaluated and the ID of this reproduction process is set at a position in the queue corresponding to its priority. By doing so, the ID of the reproduction process corresponding to the player object selected by the user is set into the reproduction queue.
When it is judged in step S2032 that the user has not made a selection indication of a program, or when the reproduction process generation process of step S2040 has been completed, the processing advances to step S2033 where it is judged whether the user has given a pause indication. When the user has given a pause indication, the processing advances to step S2041 where a pause message is outputted to the reproduction process in question. This is to say, a pause message is outputted from the main process to the reproduction process.
When a reproduction process receives a pause message, the reproduction process that is being displayed at the standard speed is paused. This corresponds to the case where the user pauses a program midway before the program has ended, so that to enable the reproduction of the program to be recommenced from the midway point, the processing advances to step S2042 where the reproduction queue setting process is executed. This is to say, the reproduction queue set in order to make the recommencement of the reproduction of the currently reproduced reproduction process possible.
When it is judged in step S2033 that the user has not given a pause indication, or when the reproduction queue setting process of step S2042 has been completed, the processing advances to step S2034 where it is judged whether the user has given an end program indication. When the user has given an end program indication, the processing advances to step S2043 where an end message is outputted to the reproduction process in question. In more detail, an end message is outputted to the reproduction process by the main process. On receiving an end message, a reproduction process that has the priority xe2x80x9c3xe2x80x9d will have the reproduction processing as a whole completed. The processing will advance from step S2043 to S2044 and, after the required post-processing A which includes the clearing of the memory that activated the reproduction process (although the clearing of the memory will not yet be performed if the priority of the reproduction process is xe2x80x9c3xe2x80x9d), the processing advances to step S2036. It should be noted here that when the user has indicated the end of a program, this differs from a pause midway through the program and so the processing for resetting the currently reproduced reproduction process back into the reproduction queue is not performed.
When the user is judged in step S2034 to have not given an end program indication, the processing advances to step S2035 where it is judged whether an end message has been received from a reproduction process. When program reproduction has ended, a reproduction process with a priority xe2x80x9c3xe2x80x9d outputs an end message. This is to say, an end message is outputted from the reproduction process to the main process. When the main process has received an end message in step S2035, the processing advances to step S2045 and after the required post-processing B has been performed (which here is the clearing of the memory for the reproduction process with the priority xe2x80x9c3xe2x80x9d), the processing advances to step S2036.
When the main process is judged in step S2035 to have not received an end message from a reproduction process, or when with either the post-processing A in step S2044 or the post-processing B in step S2045 has been completed, the processing advances to step S2036 where it is judged whether there has been an indication for the end of viewing. If not, the processing returns to step S2030 and the processing in the following steps is repeated. Conversely, when it is judged that there has been an end of viewing indication in step S2036, the processing advances to step S2046 where the end processing is performed to end the reproduction processing.
This completes the description of how data processing is performed in a conventional digital broadcasting system.
Conventional digital broadcast systems have had a drawback in that when a computer program that is required for the realization of interactive operations for a program is transmitted by the digital broadcast transmission apparatus, the conventional digital broadcast reception apparatus described above will not be able to commence the execution of the computer program used by a program until the computer program has been received in its entirety. This is because when execution is commenced while receiving a computer program, abnormal operations can occur when trying to execute a part of the computer program which is yet to be received.
As a result of the situation described above, there is the problem that interactive programs are unresponsive to user operations and changes in the state of the program.
As a method to improve responsiveness, the reception apparatus for a digital broadcast may be provided with a large-scale storage apparatus so that computer programs can be received and stored in advance.
However, when considering the supply of digital broadcasts to a wide variety of digital broadcast reception apparatuses that have a wide variety of processing capabilities, it is undesirable to make a large-capacity storage apparatus a requirement for a digital broadcast reception apparatus. Also, since the content of digital broadcasts can change over time, it is undesirable to have data received in advance.
As a different problem, when a conventional digital broadcast transmission apparatus wishes to have each digital broadcast reception apparatus execute a process in accordance with the processing level of the digital broadcast reception apparatus (which varies between a low level and a high level), the conventional digital broadcast transmission apparatus has to generate a separate program for each processing level of the digital broadcast reception apparatuses and to transmit a single program that includes all of the processes for the different processing levels of the digital broadcast reception apparatuses.
However, of the two methods described above, the former has the drawbacks that it is necessary to generate a plurality of programs and that the transmission of the plurality of programs represents a considerable load. The latter method has the drawback that each digital broadcast reception apparatus has to receive processes that do not correspond to the processing level of the digital broadcast reception apparatus, so that inefficient use is made of the storage apparatus included therein.
In view of the stated problems, it is a first object of the present invention to provide a digital broadcast reception apparatus that can start execution having only received a program in part, and to provide digital broadcast transmission apparatus that makes this possible.
It is a second object of the present invention to provide a digital broadcast reception apparatus that can perform appropriate processing for its processing level without increasing the burden of program generation or transmission, and without inefficiently using a storage apparatus, as well as providing a digital broadcast transmission apparatus that makes this possible.
To achieve the stated first object, the present invention is a program reception execution apparatus that receives and executes a program, the program having been transmitted by a program transmission apparatus after being divided into a plurality of partial programs that each include a set of next partial program information which shows what partial program should be executed following a present partial program, the program reception execution apparatus including: a storage unit including a program storage area; a reception unit for receiving the plurality of partial programs and storing the plurality of partial programs in the storage unit; and an execution control unit for executing the plurality of partial programs that are stored in the storage unit, the execution control unit including: a program presence judgement unit for judging whether an indicated partial program is stored in the storage unit; a program preparation unit (1) for referring to a set of next partial program information, for indicating, when a first partial program is being executed and a second partial program is to be executed next, the second partial program based on the set of next partial program information, and for having the program presence judgement unit judge whether the second partial program is stored in the storage unit, (2) for preparing for an. execution of the second partial program when the program presence judgement unit has judged that the second partial program is present, (3) for waiting and not allowing an execution of the program to advance when the program presence judgement unit has judged that the second partial program is not present, and for preparing for an execution of the second partial program when the program presence judgement unit judges that the second partial program is present; and a program execution unit for executing a plurality of instructions in a partial program whose execution has been prepared by the program preparation unit and for activating the program preparation unit.
With the stated construction, when a program is transmitted having been divided into a plurality of partial programs, the execution of a required partial program can commence as soon as the partial program has been received. When execution control needs to proceed from a present partial program to another partial program, this other partial program can be executed if it has already been received, with the execution of a plurality of partial programs being possible in the same way thereafter. As a result, the object program can be executed without needing to be received in its entirety, meaning that program execution can commence quickly.
Here, each set of next partial program information may include an identifier for identifying a partial program that is to be executed following a partial program that includes the set of next partial program information, the reception unit may include a separation extraction unit for separating and extracting an indicated partial program from a received signal using the identifier in a set of next partial program information, and the execution control unit may further includes a program extraction indicating unit for instructing the separation extraction unit to separate and extract a partial program and to store the partial program in the storage unit when the program presence judgement unit has judged that the partial program is not present in the storage unit.
With the stated construction, the program reception execution apparatus can extract only the required partial program, store it in the storage apparatus and execute it, meaning that a program reception execution apparatus that efficiently uses its storage capacity can be realized.
Here, each set of next partial program information may include a link instruction that is an instruction indicating an execution of another partial program after a present partial program, and the program execution unit may include: a link instruction judgement unit for judging whether an instruction to be executed in a present partial program is a link instruction; and a link instruction processing unit for activating the program preparation unit when the link instruction judgement unit has judged that the instruction to be executed is a link instruction.
With the stated construction, it is easy to inform the execution control unit that a next partial program is required for the continuation of the execution of the partial programs.
Here, at least one set of next partial program information includes (a) a selective link instruction that is an instruction indicating that one out of a plurality of next partial programs is to be executed in accordance with a function level of the program reception execution apparatus, and (b) a base identifier that is information which provides a base for combining an identifier of one out of the plurality of next partial programs, the program reception execution apparatus further including a function level storage unit for storing a function level of the program reception execution apparatus, and the program execution unit may further includes: a selective link instruction judgement unit for judging whether an instruction to be executed in a present partial program is a selective link instruction; and a selective link instruction processing unit which, when the link instruction judgement unit has judged that the instruction is a link instruction, refers to the base identifier and the function level stored in the function level storage unit and combines the base identifier and the function level to produce an identifier for the partial program to be executed, before activating the program preparation unit.
The stated construction can achieve the stated second object of the present invention, so that the program reception execution apparatus can select one partial program that performs processing in accordance with the processing level of the program reception execution apparatus, meaning that optimal processing is performed by the program reception execution apparatus.
Here, each partial program may be composed of bytecodes that are intermediate code which is independent of an execution environment, and the program execution unit may successively interpret and execute one bytecode at a time in a partial program.
With the stated construction, since it is possible to obtain a next partial program when interpreting an instruction that shows a next partial program is necessary for the continuation of the processing of the partial programs, unnecessary partial programs do not need to be written into the storage apparatus, so that the program reception execution apparatus can execute a program without inefficiently using its memory capacity.
Here, the program reception execution apparatus may further include: an event information management unit for storing a correspondence table which associates a plurality of user operations with an identifier of an initial partial program that should be executed corresponding to each respective user operation; and an event processing unit for obtaining the identifier of an initial partial program that should be executed corresponding to a user operation from the event information management unit, and for instructing the separation extraction unit to separate and extract the initial partial program and to store the initial partial program in the storage unit, before having the execution control unit execute the initial partial program when the program presence judgement unit has judged that the initial partial program has been stored in the storage unit.
With the stated construction, partial programs can be executed in response to a variety of events that can be caused by user operations or by the processing of the components, so that the processing corresponding to the events can be commenced at high speed.
Here, the program reception execution apparatus may further include: an error processing information management unit for storing a correspondence table that associates each error which occurs during program execution with error codes that show what error processing should be executed for each respective error; and an error processing unit for obtaining from the error processing information management unit the error code showing the error processing that should be executed corresponding to an occurrence of an error, and, when the error code indicates an activation of a partial program, for instructing the separation extraction unit to separate and extract the partial program and to store the partial program in the storage unit, before having the execution control unit execute the partial program when the program presence judgement unit has judged that the partial program has been stored in the storage unit.
With the stated construction, error processing can be commenced at high speed by performing a partial program that corresponds to the error occurrence.
Here, the program reception execution apparatus may receive and execute a plurality of partial programs that have been sent by a digital broadcast transmission apparatus.
With the stated construction, a program reception execution apparatus can receive and execute a plurality of partial programs transmitted by a digital broadcast transmission apparatus.
Here, the program reception execution apparatus may receive and execute a plurality of partial programs that have been repeatedly sent by a digital broadcast transmission apparatus.
With the stated construction, when the plurality of partial programs which are repeatedly transmitted are received and executed by a program reception execution apparatus, the program reception execution apparatus is able to delete executed partial programs from the storage device when they are no longer needed, since the partial programs can be received and stored again in the storage device when necessary. This means that very effective use of the storage device is made.
Here, the plurality of partial programs are transmitted by being multiplexed with at least one of image data and audio data.
With the stated construction, a partial program that controls images and audio can be executed so that control processing related to images and audio can be commenced at high speed.
Here, the program reception execution apparatus may conform to ISO/IEC 13818 Standard, and the plurality of partial programs may be transmitted by being arranged into at least one part of a private section in an MPEG2 transport stream that conforms to ISO/IEC 13818 Standard.
With the stated construction, the program reception execution apparatus can use the PID and table ID taken from the received signal to easily separate the partial programs using a transport decoder.
Here, the execution control unit may further include a transmission request transmitting unit which, when the program presence judgement unit has judged that a partial program is not stored in the storage unit, transmits a request for a transmission of the partial program to a program transmission apparatus.
With the stated construction, the program reception execution apparatus is able to delete an executed partial program from a region of the storage device when the partial program is no longer needed, since the partial program can be received and stored again in the storage device when necessary by transmitting a transmission request to a program transmission apparatus. This means that very effective use of the storage device is made.
Here, the storage unit may further include a memory management unit which, when there is insufficient free space in the program storage area for storing a new partial program, performs control to delete at least one partial program that is already present in the program storage area to generate free space into which the new partial program is written, the program execution unit may further include: a lock instruction judgement unit for judging whether an instruction to be executed in a present partial program is a lock instruction which indicates that the present partial program should not be deleted; and a lock instruction notification unit which, when the lock instruction judgement unit judges that the instruction is a lock instruction, sends common partial program identification information to the memory management unit to show that the present partial program includes a lock instruction, and the memory management unit may perform control so that partial programs that have been indicated by the common partial program identification information sent from the lock instruction notification unit are not deleted.
With the stated construction, the program reception execution apparatus can ensure that specified partial programs are not deleted from the storage device, so that when a specified partial program becomes necessary again during the execution of the program, the program reception execution apparatus can quickly commence the execution of the specified partial program.
The program transmission apparatus of the present invention is a program transmission apparatus for transmitting a program to a program reception execution apparatus, including: a storage unit for storing the program beforehand; a dividing unit for dividing the program stored in the storage unit into a plurality of partial programs; an identifier assigning unit for assigning a different identifier to each of the partial programs generated by the dividing unit to identify each of the partial programs; and a transmission unit for transmitting the plurality of partial programs.
With the stated construction, a program reception apparatus is able to start execution on receiving a required partial program, thereby achieving high-speed commencement of execution. This realizes the first object of the present invention.
Here, the program transmission apparatus may further include a next partial program information appending unit for appending a set of next partial program information, showing which partial program is to be executed next, to at least one partial program in the plurality of partial programs, each set of next partial program information including an identifier of the partial program to be executed next.
With the stated construction, the program reception apparatus can extract a required partial program using an identifier, store the extracted partial program in a storage device and execute it. As a result, a program can be executed while making efficient use of storage capacity.
Here, each set of next partial program information may include a link instruction that shows which partial program is to be executed next, and the next partial program information appending unit may include a link instruction generating unit for generating a link instruction at positions in the plurality of partial programs generated by the dividing unit so that processing can proceed to a next partial program.
With the stated construction, the execution control unit in a program reception apparatus can be easily informed of the next partial program that is to be executed by means of link instructions that are inserted into the partial programs.
Here, the program transmission apparatus may further include a program structure information storage unit for storing program structure information showing a branch structure in the program, and the dividing unit may include a branch dividing unit for referring to the program structure information stored in the program structure information storage unit and dividing the program into partial programs in accordance with the branch structure of the program.
With the stated construction, the program transmission apparatus sends each of the plurality of paths in a branch structure of a program as a separate partial program, so that the program reception execution apparatus is able to receive a partial program for only one out of the plurality of paths in the branch structure of the program and to execute the received partial program, meaning that execution can be commenced at high speed.
Here, the program structure information includes information showing a program part where one of a plurality internal processes is selected in accordance with a processing ability of a program reception execution apparatus, and the dividing unit may further include a level-demarcated dividing unit for referring to the program structure information and dividing the program so that each internal process that corresponds to a different processing ability of a program reception apparatus is divided into a separate partial program.
The stated construction realizes the second object of the present invention, and enables the generation of a program with a branch structure which has a program reception execution apparatus perform processing in accordance with its processing level. This makes program generation easy.
Here, the next partial program information appending unit may further include: a selective identifier appending unit for appending a selective identifier to identify each partial program divided by the level-demarcated dividing unit in accordance with the separate internal processes, each selective identifier including a common part for all of the partial programs divided by level-demarcated dividing unit and a unique part which is unique for each partial program in the partial programs divided by level-demarcated dividing unit; and a selective link instruction generation unit for generating a selective link instruction and inserting the selective link instruction at a necessary position in a partial program that needs an execution to proceed to one of the plurality of partial programs that have been divided by the level-demarcated dividing unit in accordance with the separate internal processes, the selective link instruction being an instruction that has a program reception apparatus proceed to one of the plurality of partial programs divided by level-demarcated dividing unit in accordance with a processing ability of the program reception apparatus.
With the stated construction, a program reception execution apparatus is able to selectively receive and execute one out of a plurality of partial programs in accordance with its processing level, meaning that the program reception execution apparatus is able to execute optimal processing for its processing level without making inefficient use of the storage apparatus.
Here, the link instruction may have an operand that is an identifier which identifies a partial program which is required next.
With the stated construction, the program reception execution apparatus can easily obtain the identifier of a next partial program which is required for the continuation of the execution of the program.
Here, the selective link instruction may have an operand that is a base operand for identifying a partial program which is required next, the base operand being an operand that provides information for the common part of each selective identifier assigned to the plurality of partial programs by the selective identifier appending unit, so that processing proceeds in accordance with the processing ability of the program reception apparatus.
With the stated construction, a program reception execution apparatus is able to selectively receive and execute one out of a plurality of partial programs in accordance with its processing level, with it being easy to generate the identifier of the partial program to be received from the received information.
Here, the dividing unit may divide the program into partial programs so that each partial program is no larger than a predetermined size.
With the stated construction, a program reception execution apparatus is able to receive a partial program that is equal to or below a predetermined size, so that execution can be commenced at high speed.
Here, the predetermined size may be a size of a packet that is a smallest transmission unit for continuously transmitting sets of data.
With the stated construction, a program reception execution apparatus is able to extract and execute a partial program with the smallest possible size that can be extracted, meaning that execution can be commenced even faster.
Here, the transmission unit may transmit the plurality of partial programs as a digital broadcast.
With the stated construction, the program can be simultaneously transmitted to a large number of program reception execution apparatuses.
Here, the transmission unit may repeatedly transmit the plurality of partial programs.
With the stated construction, the program reception execution apparatus is able to delete an executed partial program from a region of the storage device when the partial program is no longer needed, since the partial program can be received and stored again in the storage device when necessary. This means that the very effective use of the storage device is made.
Here, the plurality of partial programs may form at least one part of error processing for the program.
With the stated construction, the program reception execution apparatus can commence error processing at high speed.
Here, the program transmission apparatus may further include an image audio data storage unit for storing at least one of image data and audio data beforehand, and the transmission unit may multiplex the plurality of partial programs with any image data and audio data stored in the image audio data storage unit and transmit a multiplexing result.
With the stated construction, the program reception execution apparatus can execute a partial program that controls images or audio, so that control processing relating to images or audio can be commenced at high speed.
Here, the transmission unit may arrange the plurality of partial programs into at least part of a private section of an MPEG2 transport stream in conformity with ISO/IEC 13818 Standard, and performs multiplexing and transmission in conformity with the ISO/IEC 13818 Standard.
With the stated construction, a program reception execution apparatus can use a table ID as an identifier of a partial program, so that the program reception execution apparatus can use the PID and table ID taken from the received signal to easily separate the partial programs using a transport decoder.
Here, the program transmission apparatus may further include a transmission request reception unit for receiving a transmission request, including partial program indicating information, that has been sent by a program reception apparatus, the transmission unit further including a request response transmission unit for referring, when a transmission request has been received by the transmission request reception unit, to the partial program indicating information in the transmission request and transmitting a partial program in accordance with the transmission request.
With the stated construction, the program transmission apparatus is able to transmit a partial program having received a transmission request, so that the program reception execution apparatus is able to delete an executed partial program from a region of the storage device when the partial program is no longer needed, since the partial program can be received and stored again in the storage device when necessary by transmitting a transmission request to the program transmission apparatus. This means that very effective use of the storage device is made.
Here, the program transmission apparatus may further includes: a priority assigning unit for assigning a priority to each partial program which is a frequency with which the partial program will be repeatedly transmitted, the transmission unit may repeatedly transmit the partial programs as a digital broadcast, changing an interval at which each partial program is repeatedly transmitted in accordance with the priorities assigned by the priority assigning unit.
With the stated construction, the program reception execution apparatus will be able to reduce the time taken to receive a partial program that is the entrance into a main program, this being the minimum requirement for the execution of the program. As a result, program execution can be quickly commenced, thereby realizing the first object of the present invention.